﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.Composition;
using COFE.Core.Profile;
using COFE.Core.Lister;
using COFE.Core;
using COFE.Core.Logger;
using System.Diagnostics;
using COFE.Core.Actions;
using COFE.Core.Entry;

namespace COFE.Core.Plugin
{
    [Export(typeof(IPlugin))]
    public class COFEActionPlugin : COFEPluginBase, ICOFEActionPlugin
    {
        #region Constructor

        static COFEActionPlugin()
        {         
        }

        public COFEActionPlugin()
            : base(PluginBase.Priority_COFEACT)
        {
            WorkScheduler = new WorkScheduler();
            WorkEventLogger = new EventLogger<WorkEventArgs>();

            _entryListPropertyProviders.AddRange(new ISecondaryPropertyProvider<IEntryList>[]
            {
                new EntryListActionProvider(),
                new EntryActionProvider()
            });

            _entryPropertyProviders.AddRange(new ISecondaryPropertyProvider<IFileSystemInfo>[]
            {
                new EntryToOneEntryListPropertyProvider()
            });

            registerProperties<EntryListActions>();
            registerProperties<EntryActions>();
            registerProperties<InternalActions>();
        }

        #endregion

        #region Methods

        #endregion

        #region Data

        #endregion

        #region Public Properties

        public IWorkScheduler WorkScheduler { get; protected set; }
        public IEventLogger<WorkEventArgs> WorkEventLogger { get; protected set; }

        #endregion
    }
}
